// ==UserScript==
// @name 【玩的嗨】VIP工具箱,夸克网盘直链批量获取,全网VIP视频免费破解去广告,一站式音乐搜索下载,获取B站封面,下载B站视频等众多功能聚合 长期更新,放心食用
// @namespace https://www.wandhi.com/
// @description 🔥功能介绍🔥:🎉 1、Vip视频解析;🎉 2、一站式音乐搜索解决方案;🎉 3、bilibili视频封面获取;🎉 4、bilibili视频下载(已支持分P下载);🎉 5、夸克网盘直链批量获取;🎉 6、商品历史价格展示(一次性告别虚假降价);🎉 7、优惠券查询;🎉 8、CSDN页面、剪切板清理;🎉 9、页面自动展开(更多网站匹配中,欢迎提交想要支持的网站) 🎉 10、YouTube视频下载🎉 11、中间页自动跳转;🎉 12、搜索引擎快速跳转
// @license MIT
// @version 4.9.39
// @author MaxZhang
// @include *://item.taobao.com/*
// @include *://s.taobao.com/search*
// @include *://list.tmall.com/search_product.htm*
// @include *://detail.tmall.com/*
// @include *://chaoshi.detail.tmall.com/*
// @include *://detail.tmall.hk/*
// @include *://item.yiyaojd.com/*
// @include *://item.jd.com/*
// @include *://search.jd.com/*
// @include *://item.jd.hk/*
// @include *://search.kaola.com/*
// @include *://goods.kaola.com*
// @include *://detail.vip.com/detail-*
// @include *://product.suning.com/*
// @exclude *://vip.wandhi.com/*
// @match *://*blog.csdn.net/*
// @match *://*download.csdn.net/*
// @match *://*c.pc.qq.com/middlem*
// @match *://*pan.baidu.com/disk/main*
// @match *://link.csdn.net/*
// @match *://link.zhihu.com/*
// @match *://browser.gwdang.com/*
// @match *://*www.jianshu.com/go-wild*
// @match *://*gitee.com/link*
// @match *://*juejin.cn/?target*
// @match *://www.aliyundrive.com/drive*
// @match *://www.alipan.com/drive/*
// @match *://*.youtube.com/watch?v=*
// @match *://support.qq.com/products*
// @match *://weibo.cn/sinaurl*
// @match *://afdian.net/link*
// @match *://*oschina.net/action/GoToLink*
// @match *://jump2.bdimg.com/safecheck*
// @match *://www.douban.com/link2/?url*
// @match *://link.17173.com*
// @match *://search.suning.com/*
// @match *://pan.quark.cn/*
// @match *://docs.qq.com/scenario/link*
// @match *://mail.qq.com/cgi-bin/readtemplate*
// @match *://cloud.tencent.com/developer/tools/blog-entry*
// @match *://link.uisdc.com/*
// @match *://*.tudou.com/listplay/*
// @match *://*.tudou.com/albumplay/*
// @match *://*.tudou.com/programs/view/*
// @match *://*.tudou.com/v*
// @match *://*.mgtv.com/b/*
// @match *://film.sohu.com/album/*
// @match *://tv.sohu.com/v/*
// @match *://*.acfun.cn/v/*
// @match *://*.bilibili.com/video/*
// @match *://*.bilibili.com/anime/*
// @match *://*.bilibili.com/bangumi/play/*
// @match *://*.pptv.com/show/*
// @match *://*.baofeng.com/play/*
// @match *://*.wasu.cn/Play/show*
// @match *://v.yinyuetai.com/video/*
// @match *://v.yinyuetai.com/playlist/*
// @match *://*.wasu.cn/Play/show/*
// @match *://music.taihe.com/song*
// @match *://music.163.com/song*
// @match *://music.163.com/m/song*
// @match *://y.qq.com/*
// @match *://*.kugou.com/*
// @match *://*.kuwo.cn/*
// @match *://*.xiami.com/*
// @match *://music.taihe.com/*
// @match *://*.1ting.com/player*
// @match *://www.qingting.fm/*
// @match *://www.lizhi.fm/*
// @match *://music.migu.cn/*
// @match *://www.shangxueba.com/ask/*.html
// @match *://www.ximalaya.com/*
// @match *://www.shangxueba.com/ask/*.html
// @match *://pan.baidu.com/disk/home*
// @match *://yun.baidu.com/disk/home*
// @match *://pan.baidu.com/s/*
// @match *://yun.baidu.com/s/*
// @match *://pan.baidu.com/share/link*
// @match *://yun.baidu.com/share/link*
// @match *://wenku.baidu.com/view/*
// @match *://settings.wandhi.com/*
// @match *://m.youku.com/v*
// @match *://m.youku.com/a*
// @match *://v.youku.com/v_*
// @match *://v.youku.com/pad_show*
// @match *://*.iqiyi.com/v_*
// @match *://*.iqiyi.com/w_*
// @match *://*.iqiyi.com/a_*
// @match *://*.iqiyi.com/adv*
// @match *://*.iq.com/play/*
// @match *://*.le.com/ptv/vplay/*
// @match *://v.qq.com/x/cover/*
// @match *://v.qq.com/x/page/*
// @match *://v.qq.com/*play*
// @match *://v.qq.com/cover*
// @match *://c.pc.qq.com/ios*
// @match *://www.v2ex.com/t/*
// @match *://*.nodeseek.com/jump*
// @match *://*.zhihu.com/question*
// @match *://www.baidu.com/*
// @match *://www.google.com/*
// @match *://www.sogou.com/*
// @match *://www.so.com/s*
// @match *://cn.bing.com/search*
// @match *://sspai.com/link*
// @match *://*.kdocs.cn/office/link*
// @match *://ispacesoft.com/*.html
// @match *://tv.wandhi.com/go.html*
// @match *://tv.wandhi.com/check.html
// @match *://*.xiaohongshu.com/explore*
// @match *://www.yuque.com/r/goto*
// @match *://blog.51cto.com/transfer*
// @match *://r.wjx.com/redirect.aspx*
// @match *://www.infoq.cn/link*
// @match *://open.work.weixin.qq.com/wwopen/uriconfirm?uri=
// @require https://lib.baomitu.com/jquery/1.12.4/jquery.min.js
// @require https://lib.baomitu.com/limonte-sweetalert2/11.4.7/sweetalert2.all.min.js
// @require https://lib.baomitu.com/echarts/4.6.0/echarts.min.js
// @require https://lib.baomitu.com/layer/2.3/layer.js
// @require https://lib.baomitu.com/qrcode-generator/1.4.4/qrcode.min.js
// @require https://lib.baomitu.com/FileSaver.js/2.0.5/FileSaver.min.js
// @require https://lib.baomitu.com/viewerjs/1.11.3/viewer.min.js
// @require https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/react/18.2.0/umd/react.production.min.js
// @require https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/react-dom/18.2.0/umd/react-dom.production.min.js
// @require https://registry.npmmirror.com/@douyinfe/semi-ui/2.51.0/files/dist/umd/semi-ui.min.js
// @grant GM_setClipboard
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @grant GM_info
// @grant GM_cookie
// @grant GM_addStyle
// @grant GM.addStyle
// @grant GM_getValue
// @grant GM_setValue
// @grant GM.getValue
// @grant GM.setValue
// @grant GM_notification
// @grant GM_openInTab
// @grant GM_deleteValue
// @grant GM_registerMenuCommand
// @grant GM_unregisterMenuCommand
// @grant GM_download
// @connect api.wandhi.com
// @connect api.huizhek.com
// @connect cdn.jsdelivr.net
// @connect tool.manmanbuy.com
// @connect gwdang.com
// @connect scriptcat.org
// @connect quark.cn
// @connect openapi.baidu.com
// @connect localhost
// @connect pan.baidu.com
// @connect api.bilibili.com
// @compatible firefox
// @compatible chrome
// @compatible opera safari edge
// @compatible safari
// @compatible edge
// @run-at document-end
// @antifeature referral-link 此提示为GreasyFork代码规范要求含有查券功能的脚本必须添加,实际使用无任何强制跳转,代码可查,请知悉。
// ==/UserScript==
(function(global, factory) {
"object" == typeof exports && "undefined" != typeof module ? factory(require("react-dom"), require("sweetalert2"), require("@douyinfe/semi-ui"), require("viewerjs"), require("react")) : "function" == typeof define && define.amd ? define([ "react-dom", "sweetalert2", "@douyinfe/semi-ui", "viewerjs", "react" ], factory) : factory((global = "undefined" != typeof globalThis ? globalThis : global || self).ReactDOM, global.Swal, global.SemiUI, global.Viewer, global.React);
})(this, (function(ReactDOM, Swal, semiUi, Viewer, React) {
"use strict";
var ReactDOM__default, Swal__default, Viewer__default, React__default, extendStatics, update_key, Min, Hour, Day, Week, BrowerType, Logger, LogLevel, VersionResult, Core, VersionCompar, Config, AjaxOption, Http, HttpHeaders, Route, css_248z$a, Common, PluginBase, SiteEnum, UpdateService, EventHelper, Runtime, BaseCoupon, VpCoupon, SuningCoupon, JdCoupon, TaoCoupon, DefCoupon, LinesOption, css_248z$9, MsgInfo, PromoInfo, HistoryService, KaolaCoupon, css_248z$8, sAlert, commonjsGlobal, fingerprint2, GwdService, GwdHelper, css_248z$7, TaoBaoService, container, Container, css_248z$6, ConfigEnum, Toast, BiliImgService, Menu$2, jks, MovieService, JdService, UrlHelper, MusicService, ItemType, Tao, ListService, css_248z$5, CsdnAdService, Alert, Menu$1, WenKuService, LinkJumpService, css_248z$4, _GwdService, AutoExpandService, BIliTools, BiliMobileService, AliyunPanToken, css_248z$3, css_248z$2, MfbMenu, MfbModel, YoutubeService, SettingService, ControlMenuService, SearchService, QuarkFileResponse, Quark, NetDiskDirectService, AdClearService, css_248z$1, ImgViewService, css_248z, ZhihuService, Menu, XhsService, SettingUI, SettingUIService, OneKeyVipInjection;
function _interopDefaultLegacy(e) {
return e && "object" == typeof e && "default" in e ? e : {
default: e
};
}
function __extends(d, b) {
function __() {
this.constructor = d;
}
extendStatics(d, b), d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype,
new __);
}
function __awaiter(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))((function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : function adopt(value) {
return value instanceof P ? value : new P((function(resolve) {
resolve(value);
}));
}(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
}));
}
function __generator(thisArg, body) {
var f, y, t, g, _ = {
label: 0,
sent: function() {
if (1 & t[0]) throw t[1];
return t[1];
},
trys: [],
ops: []
};
return g = {
next: verb(0),
throw: verb(1),
return: verb(2)
}, "function" == typeof Symbol && (g[Symbol.iterator] = function() {
return this;
}), g;
function verb(n) {
return function(v) {
return function step(op) {
if (f) throw new TypeError("Generator is already executing.");
for (;_; ) try {
if (f = 1, y && (t = 2 & op[0] ? y.return : op[0] ? y.throw || ((t = y.return) && t.call(y),
0) : y.next) && !(t = t.call(y, op[1])).done) return t;
switch (y = 0, t && (op = [ 2 & op[0], t.value ]), op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
return _.label++, {
value: op[1],
done: !1
};
case 5:
_.label++, y = op[1], op = [ 0 ];
continue;
case 7:
op = _.ops.pop(), _.trys.pop();
continue;
default:
if (!(t = _.trys, (t = t.length > 0 && t[t.length - 1]) || 6 !== op[0] && 2 !== op[0])) {
_ = 0;
continue;
}
if (3 === op[0] && (!t || op[1] > t[0] && op[1] < t[3])) {
_.label = op[1];
break;
}
if (6 === op[0] && _.label < t[1]) {
_.label = t[1], t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2], _.ops.push(op);
break;
}
t[2] && _.ops.pop(), _.trys.pop();
continue;
}
op = body.call(thisArg, _);
} catch (e) {
op = [ 6, e ], y = 0;
} finally {
f = t = 0;
}
if (5 & op[0]) throw op[1];
return {
value: op[0] ? op[1] : void 0,
done: !0
};
}([ n, v ]);
};
}
}
function __read(o, n) {
var i, r, ar, e, m = "function" == typeof Symbol && o[Symbol.iterator];
if (!m) return o;
i = m.call(o), ar = [];
try {
for (;(void 0 === n || n-- > 0) && !(r = i.next()).done; ) ar.push(r.value);
} catch (error) {
e = {
error: error
};
} finally {
try {
r && !r.done && (m = i.return) && m.call(i);
} finally {
if (e) throw e.error;
}
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
}
function styleInject(css, ref) {
var insertAt, head, style;
void 0 === ref && (ref = {}), insertAt = ref.insertAt, css && "undefined" != typeof document && (head = document.head || document.getElementsByTagName("head")[0],
(style = document.createElement("style")).type = "text/css", "top" === insertAt && head.firstChild ? head.insertBefore(style, head.firstChild) : head.appendChild(style),
style.styleSheet ? style.styleSheet.cssText = css : style.appendChild(document.createTextNode(css)));
}
function createCommonjsModule(fn, module) {
return fn(module = {
exports: {}
}, module.exports), module.exports;
}
ReactDOM__default = _interopDefaultLegacy(ReactDOM), Swal__default = _interopDefaultLegacy(Swal),
Viewer__default = _interopDefaultLegacy(Viewer), React__default = _interopDefaultLegacy(React),
extendStatics = function(d, b) {
return (extendStatics = Object.setPrototypeOf || {
__proto__: []
} instanceof Array && function(d, b) {
d.__proto__ = b;
} || function(d, b) {
for (var p in b) b.hasOwnProperty(p) && (d[p] = b[p]);
})(d, b);
}, update_key = "isUpdate", Min = 60, Hour = 60 * Min, Day = 24 * Hour, Week = 7 * Day,
function(BrowerType) {
BrowerType[BrowerType.Edge = 0] = "Edge", BrowerType[BrowerType.Edg = 1] = "Edg",
BrowerType[BrowerType.Chrome = 2] = "Chrome", BrowerType[BrowerType.Firefox = 3] = "Firefox",
BrowerType[BrowerType.Safiri = 4] = "Safiri", BrowerType[BrowerType.Se360 = 5] = "Se360",
BrowerType[BrowerType.Ie2345 = 6] = "Ie2345", BrowerType[BrowerType.Baidu = 7] = "Baidu",
BrowerType[BrowerType.Liebao = 8] = "Liebao", BrowerType[BrowerType.UC = 9] = "UC",
BrowerType[BrowerType.QQ = 10] = "QQ", BrowerType[BrowerType.Sogou = 11] = "Sogou",
BrowerType[BrowerType.Opera = 12] = "Opera", BrowerType[BrowerType.Maxthon = 13] = "Maxthon";
}(BrowerType || (BrowerType = {})), Logger = function() {
function Logger() {}
return Logger.log = function(msg, group, level) {}, Logger.debug = function(msg, group) {
void 0 === group && (group = "debug"), this.log(msg, group, LogLevel.debug);
}, Logger.info = function(msg, group) {
void 0 === group && (group = "info"), this.log(msg, group, LogLevel.info);
}, Logger.warn = function(msg, group) {
void 0 === group && (group = "warning"), this.log(msg, group, LogLevel.warn);
}, Logger.error = function(msg, group) {
void 0 === group && (group = "error"), this.log(msg, group, LogLevel.error);
}, Logger;
}(), function(LogLevel) {
LogLevel[LogLevel.debug = 0] = "debug", LogLevel[LogLevel.info = 1] = "info", LogLevel[LogLevel.warn = 2] = "warn",
LogLevel[LogLevel.error = 3] = "error";
}(LogLevel || (LogLevel = {})), function(VersionResult) {
VersionResult[VersionResult.less = -1] = "less", VersionResult[VersionResult.equal = 0] = "equal",
VersionResult[VersionResult.greater = 1] = "greater", VersionResult[VersionResult.incomparable = NaN] = "incomparable";
}(VersionResult || (VersionResult = {})), Core = function() {
function Core() {
this.url = Core.currentUrl();
}
return Core.Render = function(element, id) {
var script, container = document.getElementById(id);
container || ((script = unsafeWindow.window.document.createElement("div")).id = id,
unsafeWindow.window.document.head.append(script), container = document.getElementById(id)),
ReactDOM__default.default.render(element, container);
}, Core.appendTo = function(selector, html) {
$(selector).append(html);
}, Core.prepend = function(selector, html) {
$(selector).prepend(html);
}, Core.lazyload = function(callback, time) {
return void 0 === time && (time = 5), __awaiter(this, void 0, Promise, (function() {
var _this = this;
return __generator(this, (function(_a) {
return [ 2, new Promise((function(resolve) {
setTimeout((function() {
return __awaiter(_this, void 0, void 0, (function() {
return __generator(this, (function(_a) {
switch (_a.label) {
case 0:
return [ 4, callback() ];
case 1:
return _a.sent(), resolve(), [ 2 ];
}
}));
}));
}), 1e3 * time);
})) ];
}));
}));
}, Core.autoLazyload = function(is_ok, callback, time) {
return void 0 === time && (time = 5), __awaiter(this, void 0, Promise, (function() {
var _this = this;
return __generator(this, (function(_a) {
return [ 2, new Promise((function(resolve) {
return __awaiter(_this, void 0, void 0, (function() {
return __generator(this, (function(_a) {
switch (_a.label) {
case 0:
return is_ok() ? [ 3, 1 ] : (setTimeout((function() {
Core.autoLazyload(is_ok, callback, time).then((function() {
return resolve();
}));
}), 1e3 * time), [ 3, 3 ]);
case 1:
return [ 4, callback() ];
case 2:
_a.sent(), Logger.debug("\u81ea\u52a8\u5ef6\u8fdf\u56de\u8c03\u6267\u884c\u5b8c\u6bd5,\u5ef6\u65f6\u65f6\u95f4:" + time),
resolve(), _a.label = 3;
case 3:
return [ 2 ];
}
}));
}));
})) ];
}));
}));
}, Core.sleep = function(time) {
return new Promise((function(resolve) {
setTimeout((function() {
resolve();
}), 1e3 * time);
}));
}, Core.random = function(min, max) {
var range = max - min, rand = Math.random();
return min + Math.round(rand * range);
}, Core.randStr = function(len) {
var $chars, maxPos, pwd, i;
for (void 0 === len && (len = 4), maxPos = ($chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789").length,
pwd = "", i = 0; i < len; i++) pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
return pwd;
}, Core.background = function(callback, time) {
void 0 === time && (time = 5), setInterval((function() {
callback();
}), 1e3 * time);
}, Object.defineProperty(Core, "head", {
get: function() {
return unsafeWindow.window.document.head;
},
enumerable: !1,
configurable: !0
}), Core.isNumber = function(a) {
return !Array.isArray(a) && a - parseFloat(a) >= 0;
}, Core.addUrl = function(key, url) {
GM_setValue(key, url);
}, Core.openUrl = function(key) {
this.open(GM_getValue(key));
}, Core.getPar = function(option, url) {
void 0 === url && (url = window.location.search);
var v = url.match(new RegExp("[?&]" + option + "=([^&]+)", "i"));
return null == v || v.length < 1 ? "" : v[1];
}, Core.appendCss = function(url) {
var linkCSS = document.createElement("link");
linkCSS.type = "text/css", linkCSS.rel = "stylesheet", linkCSS.href = url, Core.head.appendChild(linkCSS);
}, Core.appendCssContent = function(content) {
var Style = document.createElement("style");
Style.innerHTML = content, Core.head.appendChild(Style);
}, Core.prototype.bodyAppendCss = function(url) {
$("body").append($(''));
}, Core.bodyAppend = function(html) {
$("body").append(html);
}, Core.bodyPrepend = function(html) {
$("body").prepend(html);
}, Core.appendJs = function(url) {
var linkScript = document.createElement("script");
linkScript.type = "text/javascript", linkScript.src = url, this.head.appendChild(linkScript);
}, Core.prototype.bodyAppendJs = function(url) {
$("body").append($('